﻿Public Class frmDostawca

    Private mvarDbHolder As clsDataBase
    Private mvarDostawca As clsSzukanie
    Private mvarNumerPozycji As Integer
    Private mvarBlokowanie As clsRecordLock
    Private mvarWyznBlokowania As Boolean = False
    Private mvarUzytkownik As clsUzytkownik
    Private mvarTmpNazwa As String
    Private mvarWyznUruchomienia As Boolean
    Private mvarWyznFrm As Boolean
    Private mvarId As Integer = -1
    Public Zmiana As Boolean

    Public Sub New(ByVal WyznFrm As Boolean, ByVal Id As Integer)

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = clsUzytkownik.Instance()

        mvarWyznFrm = WyznFrm
        mvarId = Id
        mvarNumerPozycji = 0

    End Sub

    Private Sub Szukaj()

        Dim lvarCommand As String
        Dim lvarI As Integer
        Dim lvarWyzn As Boolean = False

        lvarCommand = String.Empty
        If txtNazwa.Text = String.Empty Then
            lvarCommand = String.Empty
        Else
            lvarCommand = "WHERE "
            If txtNazwa.Text <> String.Empty Then
                lvarCommand = lvarCommand + "UPPER (nazwa_firmy) LIKE UPPER('" & txtNazwa.Text & "%')"
                lvarWyzn = True
            End If

        End If
        mvarDostawca = New clsSzukanie
        mvarDostawca.SzukajDostawcy(mvarDbHolder, lvarCommand)
        dgvInformacje.Rows.Clear()

        If mvarDostawca.Dostawca.Count = 0 And mvarWyznUruchomienia = False Then
            MessageBox.Show("Nie ma takiego dostawcy.", "WIREMET")
        Else
            For Each lvarDostawca As clsInhDostawca In mvarDostawca.Dostawca
                lvarI += 1
                dgvInformacje.Rows.Add(lvarI, lvarDostawca.NazwaFirmy)
                dgvInformacje.Rows(lvarI - 1).Tag = lvarDostawca
            Next
        End If
        mvarWyznUruchomienia = False

        If dgvInformacje.Rows.Count > 0 Then
            dgvInformacje.ClearSelection()
            dgvInformacje.Rows.Item(mvarNumerPozycji).Selected = True

            If mvarNumerPozycji > 5 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 5
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        End If

        If mvarWyznFrm Then
            ZnajdzDostawce()
        End If

    End Sub

    Private Sub ZnajdzDostawce()

        If dgvInformacje.Rows.Count > 0 Then
            For lvarI As Integer = 0 To dgvInformacje.Rows.Count - 1
                If CInt(CType(dgvInformacje.Rows.Item(lvarI).Tag, clsInhDostawca).Id) = mvarId Then

                    dgvInformacje.ClearSelection()
                    dgvInformacje.Rows.Item(lvarI).Selected = True

                    If lvarI > 5 Then
                        dgvInformacje.FirstDisplayedScrollingRowIndex = lvarI - 5
                    Else
                        dgvInformacje.FirstDisplayedScrollingRowIndex = 0
                    End If
                    Exit For

                End If
            Next
        End If

    End Sub


    Private Sub Blokowanie()

        mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, CInt(CType(dgvInformacje.SelectedRows(0).Tag, clsInhDostawca).Id), "oem.dostawca", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
        mvarWyznBlokowania = True

        If Not mvarBlokowanie.RecordLocked Then
            MessageBox.Show("TYLKO DO ODCZYTU.", "WIREMET")
        Else
            grbPoleEdycji.Enabled = True
        End If

    End Sub

    Private Sub Wyczysc()
        txtNazwa.Text = String.Empty
    End Sub

    Private Sub WyczyscInfomacje()

        dgvInformacje.Rows.Clear()
        txtNowaNazwa.Text = String.Empty
        grbPoleEdycji.Enabled = False

    End Sub

    Private Sub Zapisz()

        Dim lvarDostawca As New clsInhDostawca

        mvarDbHolder.BeginTrans()
        With lvarDostawca
            .NazwaFirmy = txtNowaNazwa.Text
            .Save(mvarDbHolder, VAR_ERROR_HANDLER)
        End With
        mvarDbHolder.CommitTrans()
        WyczyscInfomacje()
        Szukaj()

    End Sub

    Private Sub Zmien()

        Dim lvarDostawca As New clsInhDostawca

        mvarDbHolder.BeginTrans()
        With lvarDostawca
            .Id = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsDostawca).Id
            .NazwaFirmy = txtNowaNazwa.Text
            .Save(mvarDbHolder, VAR_ERROR_HANDLER)
        End With
        mvarDbHolder.CommitTrans()
        WyczyscInfomacje()
        Szukaj()

    End Sub

    Private Sub dgvInformacje_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseClick
        txtNowaNazwa.Text = String.Empty
        grbPoleEdycji.Enabled = False
    End Sub

    Private Sub dgvInformacje_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgvInformacje.MouseDoubleClick

        If dgvInformacje.Rows.Count = 0 Or dgvInformacje.SelectedRows.Count = 0 Then
            MessageBox.Show("Wybierz dostawcę.", "WIREMET")
        Else
            If mvarWyznFrm Then
                Zmiana = True
                Me.Close()
            Else
                If mvarWyznBlokowania Then
                    If mvarBlokowanie.RecordLocked Then
                        mvarBlokowanie.Unlock()
                    End If
                End If
                Blokowanie()
                txtNowaNazwa.Text = dgvInformacje.SelectedRows.Item(0).Cells("colNazwa").Value.ToString()
                mvarNumerPozycji = dgvInformacje.SelectedRows.Item(0).Index
            End If
        End If

    End Sub


    Private Sub cmdSzukaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSzukaj.Click
        Szukaj()
    End Sub

    Private Sub cmdWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWyczysc.Click
        Wyczysc()
    End Sub


    Private Sub cmdNowa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNowa.Click
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        txtNowaNazwa.Text = String.Empty
        grbPoleEdycji.Enabled = True
        txtNowaNazwa.Focus()
        cmdZmien.Enabled = False
        dgvInformacje.ClearSelection()
    End Sub

    Private Sub cmdEdycja_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdycja.Click

        If dgvInformacje.Rows.Count = 0 Or dgvInformacje.SelectedRows.Count = 0 Then
            MessageBox.Show("Wybierz dostawcę.", "WIEREMET")
        Else
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            Blokowanie()
            txtNowaNazwa.Text = dgvInformacje.SelectedRows.Item(0).Cells("colNazwa").Value.ToString()
            txtNowaNazwa.Focus()
            mvarNumerPozycji = dgvInformacje.SelectedRows.Item(0).Index
        End If

    End Sub


    Private Sub cmdDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDodaj.Click

        If txtNowaNazwa.Text <> String.Empty Then
            mvarTmpNazwa = txtNowaNazwa.Text
            Zapisz()
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            dgvInformacje.ClearSelection()
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                If lvarRow.Cells("colNazwa").Value.ToString() = mvarTmpNazwa Then
                    mvarNumerPozycji = lvarRow.Index
                    dgvInformacje.Rows.Item(lvarRow.Index).Selected = True
                    Exit For
                End If
            Next
            dgvInformacje.Rows.Item(mvarNumerPozycji).Selected = True
            If mvarNumerPozycji > 4 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 4
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        Else
            MessageBox.Show("Podaj wszystkie dane", "WIREMET")
        End If

    End Sub

    Private Sub cmdZmien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZmien.Click

        If txtNowaNazwa.Text <> String.Empty Then
            mvarTmpNazwa = txtNowaNazwa.Text
            Zmien()
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            dgvInformacje.ClearSelection()
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                If lvarRow.Cells("colNazwa").Value.ToString() = mvarTmpNazwa Then
                    mvarNumerPozycji = lvarRow.Index
                    dgvInformacje.Rows.Item(lvarRow.Index).Selected = True
                    Exit For
                End If
            Next
            If mvarNumerPozycji > 4 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 4
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        Else
            MessageBox.Show("Podaj wszystkie dane", "WIREMET")
        End If

    End Sub

    Private Sub frmDostawca_Activated(sender As Object, e As EventArgs) Handles Me.Activated
        mvarWyznUruchomienia = True
        Szukaj()
    End Sub


    Private Sub frmDostawca_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub txtNazwa_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNazwa.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            Szukaj()
        End If
    End Sub

    Private Sub frmDostawca_Load(sender As Object, e As EventArgs) Handles Me.Load
        mvarWyznUruchomienia = True
        Szukaj()
    End Sub

End Class